home *** CD-ROM | disk | FTP | other *** search
/ Aminet 52 / Aminet 52 (2002)(GTI - Schatztruhe)[!][Dec 2002].iso / Aminet / dev / c / Emperor.lha / Emperor / Projects / Workshop / Workshop.h < prev    next >
Text File  |  2002-09-27  |  7KB  |  204 lines

  1. /** some defined constants used in context with Get/SetEnvironmentVars() **/
  2. #define INITIALVALUES   0
  3. #define TO_DISK         1
  4. #define TO_MEM          2
  5. #define FROM_DISK       1
  6. #define FROM_MEM        2
  7.  
  8. /** own prototypes **/
  9. void GetEnvironmentVars(BYTE);
  10. void SetEnvironmentVars(BYTE);
  11. void GetEnvVariableFromDisk(struct Gadget *, char *, char *, BYTE);
  12. void SetEnvVariableFromDisk(struct Gadget *, char *, BYTE);
  13.  
  14. /** own variables **/
  15. char crashfile[200];
  16. char alertfile[200];
  17. STRPTR mempointer;
  18.  
  19. void Window1_CloseWindow_Event(void)
  20. {
  21.     if(Quitrequest1()) Emperor_QuitProgram();
  22. }
  23.  
  24. void Startup(void)
  25. {
  26.     mempointer = (STRPTR) AllocMem(200, MEMF_FAST | MEMF_CLEAR);
  27. }
  28.  
  29. void Shutdown(void)
  30. {
  31.     FreeMem(mempointer, 200);
  32. }
  33.  
  34. void Window1_ShowWindow_Event(void)
  35. {
  36.     GetEnvironmentVars(FROM_DISK);
  37. }
  38.  
  39. void Window1_Iconify_Event(void)
  40. {
  41.     Emperor_IconifyWindow_Window1();
  42. }
  43.  
  44. void Window1_Uniconify_Event(void)
  45. {
  46.     Emperor_UniconifyWindow_Window1();
  47. }
  48.  
  49. void Menu_Quit1_MenuPick_Event(void)
  50. {
  51.     if(Quitrequest1()) Emperor_QuitProgram();
  52. }
  53.  
  54. void Menu_ResetToDefaults1_MenuPick_Event(void)
  55. {
  56.     GetEnvironmentVars(INITIALVALUES);
  57. }
  58.  
  59. void Menu_LastSaved1_MenuPick_Event(void)
  60. {
  61.     GetEnvironmentVars(FROM_DISK);
  62. }
  63.  
  64. void Menu_Restore1_MenuPick_Event(void)
  65. {
  66.     GetEnvironmentVars(FROM_MEM);
  67. }
  68.  
  69. void Chooser_AddressHandling_GadgetUp_Event(void)
  70. {
  71.     /** turn address-gadget on or off **/
  72.     BOOL on;
  73.  
  74.     on = stringtoint(Emperor_GetGadgetAttr(Chooser_AddressHandling));
  75.     Emperor_SetGadgetDisabledAttr(String_Address, !on);
  76.     if(on) GetEnvVariableFromDisk(String_Address, "PowerPC/gfxaddr", "$E0000000", FROM_MEM);
  77.     else Emperor_SetGadgetAttr(String_Address, "$0");
  78. }
  79.  
  80. void Getfile_CrashFile_GadgetUp_Event(void)
  81. {
  82.     strcpy(crashfile, GetFile1_Filerequest());
  83.     Emperor_SetGadgetAttr(Getfile_CrashFile, crashfile);
  84. }
  85.  
  86. void Getfile_AlertFile_GadgetUp_Event(void)
  87. {
  88.     strcpy(alertfile, GetFile2_Filerequest());
  89.     Emperor_SetGadgetAttr(Getfile_AlertFile, alertfile);
  90. }
  91.  
  92. void Button_Save_GadgetUp_Event(void)
  93. {
  94.     SetEnvironmentVars(TO_DISK);
  95.     Emperor_QuitProgram();
  96. }
  97.  
  98. void Button_Use_GadgetUp_Event(void)
  99. {
  100.     SetEnvironmentVars(TO_MEM);
  101.     Emperor_QuitProgram();
  102. }
  103.  
  104. void Button_Break_GadgetUp_Event(void)
  105. {
  106.     Emperor_QuitProgram();
  107. }
  108.  
  109. void GetEnvironmentVars(BYTE which_Place)
  110. {
  111.     /** high-level function to get environment variables **/
  112.  
  113.     BYTE ignore = 0;
  114.  
  115.     GetEnvVariableFromDisk(Checkbox_MemProt, "PowerPC/memprot", "1", which_Place);
  116.     GetEnvVariableFromDisk(Checkbox_NoPPC, "PowerPC/noppc", "0", which_Place);
  117.     GetEnvVariableFromDisk(Checkbox_EarlyTerm, "PowerPC/earlyterm", "0", which_Place);
  118.     GetEnvVariableFromDisk(Chooser_Terminator, "PowerPC/terminator", "2", which_Place);
  119.     GetEnvVariableFromDisk(Checkbox_HideWarn, "PowerPC/hidewarning", "0", which_Place);
  120.     GetEnvVariableFromDisk(Checkbox_NoPatch, "PowerPC/nopatch", "0", which_Place);
  121.     GetEnvVariableFromDisk(Chooser_DebuggerHandling, "PowerPC/debug", "0", which_Place);
  122.     GetEnvVariableFromDisk(Checkbox_Segmentinfo, "PowerPC/seginfo", "0", which_Place);
  123.     GetEnvVariableFromDisk(Getfile_AlertFile, "PowerPC/alertfile", "CON:////WarpOS - System Message/AUTO/CLOSE/WAIT/INACTIVE", which_Place);
  124.     GetEnvVariableFromDisk(Getfile_CrashFile, "PowerPC/crashfile", "CON:////WarpOS - PowerPC Exception/AUTO/CLOSE/WAIT/INACTIVE", which_Place);
  125.     GetEnvVariableFromDisk(String_Address, "PowerPC/gfxaddr", "$E0000000", which_Place);
  126.     mempointer++;
  127.     if(*mempointer == '0') ignore = 1;
  128.     mempointer--;
  129.  
  130.     GetEnvVariableFromDisk(Chooser_AddressHandling, "PowerPC/force", "0", which_Place);
  131.     if(ignore) strcpy(mempointer, "-1");
  132.     Emperor_SetGadgetAttr(Chooser_AddressHandling, inttostring(stringtoint(mempointer) + 1));
  133.     Chooser_AddressHandling_GadgetUp_Event();
  134. }
  135.  
  136. void GetEnvVariableFromDisk(struct Gadget *which_Gadget, char *which_Variable, char *which_Initial, BYTE which_Place)
  137. {
  138.     /** low-level function to get environment variables  **/
  139.     /** +at first it asks for current directory and var  **/
  140.     /** +second step is to ask for the value             **/
  141.     /** +if no variable will be found, and initial value **/
  142.     /**  is hand-over to mempointer                      **/
  143.     /** +at last the gadget is set with the new value    **/
  144.  
  145.     char buffer[30];
  146.  
  147.     if(which_Place == FROM_DISK) strcpy(buffer, "ENV:");
  148.     else strcpy(buffer, "ENVARC:");
  149.  
  150.     strcat(buffer, which_Variable);
  151.     if((GetVar(buffer, mempointer, 200, GVF_GLOBAL_ONLY) == -1) || (which_Place == INITIALVALUES))
  152.     {
  153.         if((IoErr() == ERROR_OBJECT_NOT_FOUND) || (which_Place == INITIALVALUES))
  154.         {
  155.             strcpy(mempointer, which_Initial);
  156.         }
  157.     }
  158.     Emperor_SetGadgetAttr(which_Gadget, mempointer);
  159. }
  160.  
  161. void SetEnvironmentVars(BYTE which_Place)
  162. {
  163.     /** high-level function to set environment variables **/
  164.  
  165.     BYTE ignore;
  166.     char buffer[30];
  167.  
  168.     SetEnvVariableFromDisk(Checkbox_MemProt, "PowerPC/memprot", which_Place);
  169.     SetEnvVariableFromDisk(Checkbox_NoPPC, "PowerPC/noppc", which_Place);
  170.     SetEnvVariableFromDisk(Checkbox_EarlyTerm, "PowerPC/earlyterm", which_Place);
  171.     SetEnvVariableFromDisk(Chooser_Terminator, "PowerPC/terminator", which_Place);
  172.     SetEnvVariableFromDisk(Checkbox_HideWarn, "PowerPC/hidewarning", which_Place);
  173.     SetEnvVariableFromDisk(Checkbox_NoPatch, "PowerPC/nopatch", which_Place);
  174.     SetEnvVariableFromDisk(Chooser_DebuggerHandling, "PowerPC/debug", which_Place);
  175.     SetEnvVariableFromDisk(Checkbox_Segmentinfo, "PowerPC/seginfo", which_Place);
  176.     SetEnvVariableFromDisk(Getfile_AlertFile, "PowerPC/alertfile", which_Place);
  177.     SetEnvVariableFromDisk(Getfile_CrashFile, "PowerPC/crashfile", which_Place);
  178.     SetEnvVariableFromDisk(String_Address, "PowerPC/gfxaddr", which_Place);
  179.  
  180.     ignore = stringtoint(Emperor_GetGadgetAttr(Chooser_AddressHandling)) - 1;
  181.     if(ignore == -1) ignore = 0;
  182.  
  183.     if(which_Place == TO_DISK) strcpy(buffer, "ENV:PowerPC/force");
  184.     else strcpy(buffer, "ENVARC:PowerPC/force");
  185.     SetVar(buffer, inttostring(ignore), 1, GVF_GLOBAL_ONLY);
  186. }
  187.  
  188. void SetEnvVariableFromDisk(struct Gadget *which_Gadget, char *which_Variable, BYTE which_Place)
  189. {
  190.     /** low-level function to set environment variables  **/
  191.     /** +at first it asks for current directory and var  **/
  192.     /** +second step is to get the value from gadget     **/
  193.     /** +at last the value is saved to current directory **/
  194.  
  195.     char buffer[30];
  196.  
  197.     if(which_Place == TO_DISK) strcpy(buffer, "ENV:");
  198.     else strcpy(buffer, "ENVARC:");
  199.     strcat(buffer, which_Variable);
  200.  
  201.     strcpy(mempointer, Emperor_GetGadgetAttr(which_Gadget));
  202.     SetVar(buffer, mempointer, stringlength(mempointer), GVF_GLOBAL_ONLY);
  203. }
  204.